home *** CD-ROM | disk | FTP | other *** search
/ Quick PC 61 / Quick PC 61.iso / I386 / P3MSPROP.AS_ / p3msprop.asp
Encoding:
Text File  |  2003-02-21  |  15.7 KB  |  499 lines

  1. <%@ Language=VBScript   %>
  2. <%    Option Explicit     %>
  3. <%
  4.     '-------------------------------------------------------------------------
  5.     ' POP3 Mail Add-in - Master Settings
  6.     ' Copyright (C) Microsoft Corporation.  All rights reserved.
  7.     '-------------------------------------------------------------------------
  8. %>
  9.     <!-- #include virtual="/admin/inc_framework.asp" -->
  10.     <!-- #include virtual="/admin/ots_main.asp" -->
  11.     <!-- #include file="p3cminc.asp" -->
  12. <%
  13.  
  14.     '-------------------------------------------------------------------------
  15.     ' Global Constants
  16.     '-------------------------------------------------------------------------
  17.     Dim SOURCE_FILE
  18.     SOURCE_FILE = SA_GetScriptFileName()
  19.     
  20.     Const c_nMaxPort                = 65535
  21.     Const FLD_AUTHENTICATION    = "fldAuthentication"
  22.     Const FLD_PORT                    = "fldPort"
  23.     Const FLD_LOGGING                = "fldLogging"
  24.     Const FLD_MAILROOT            = "fldMailRoot"
  25.     Const FLD_REQUIRESPA            = "fldRequireSPA"
  26.     Const FLD_SERVICERESTART        = "fldServiceRestart"
  27.  
  28.     Const SERVICE_RESTART_NONE           = 0
  29.     Const SERVICE_RESTART_POP3SVC        = 1
  30.     Const SERVICE_RESTART_POP3SVC_SMTP     = 2
  31.  
  32.     Const SERVICE_CONTROL_STOP          = 1
  33.     
  34.     '-------------------------------------------------------------------------
  35.     ' Global Variables
  36.     '-------------------------------------------------------------------------
  37.     Dim g_page
  38.     
  39.     Dim g_nAuthentication
  40.     Dim g_nPort
  41.     Dim g_nLoggingLevel
  42.     Dim g_strMailRoot
  43.     Dim g_bSPARequired
  44.  
  45.     Dim g_nDomains
  46.     Dim g_iServiceRestart
  47.     
  48.     '----------------------------------------------------------------------
  49.     ' Global Localized Strings
  50.     '----------------------------------------------------------------------
  51.     Dim l_strPageTitle
  52.     l_strPageTitle                = GetLocString(RES_DLL_NAME, _
  53.                                                POP3_PAGETITLE_MASTERSETTINGS, _
  54.                                                "")
  55.     Dim l_strCaptionAuthentication
  56.     l_strCaptionAuthentication    = GetLocString(RES_DLL_NAME, _
  57.                                                POP3_CAPTION_MASTERSETTINGS_AUTHENTICATION, _
  58.                                                "")
  59.     Dim l_astrAuthentication(3)
  60.     l_astrAuthentication(AUTH_AD)        = GetLocString(RES_DLL_NAME, _
  61.                                                POP3_AUTHENTICATION_ACTIVEDIRECTORY, _
  62.                                                "")
  63.     l_astrAuthentication(AUTH_SAM)        = GetLocString(RES_DLL_NAME, _
  64.                                                POP3_AUTHENTICATION_WINDOWSACCOUNTS, _
  65.                                                "")
  66.     l_astrAuthentication(AUTH_FILE)        = GetLocString(RES_DLL_NAME, _
  67.                                                POP3_AUTHENTICATION_FILE, _
  68.                                                "")
  69.     Dim l_strCaptionPort
  70.     l_strCaptionPort            = GetLocString(RES_DLL_NAME, _
  71.                                                POP3_CAPTION_MASTERSETTINGS_PORT, _
  72.                                                "")
  73.     Dim l_strCaptionLoggingLevel
  74.     l_strCaptionLoggingLevel    = GetLocString(RES_DLL_NAME, _
  75.                                                POP3_CAPTION_MASTERSETTINGS_LOGGING, _
  76.                                                "")
  77.     Dim l_astrLogging(3)
  78.     l_astrLogging(LOGGING_NONE)        = GetLocString(RES_DLL_NAME, _
  79.                                                POP3_LOGGING_NONE, _
  80.                                                "")
  81.     l_astrLogging(LOGGING_MINIMUM)    = GetLocString(RES_DLL_NAME, _
  82.                                                POP3_LOGGING_MINIMUM, _
  83.                                                "")
  84.     l_astrLogging(LOGGING_MEDIUM)    = GetLocString(RES_DLL_NAME, _
  85.                                                POP3_LOGGING_MEDIUM, _
  86.                                                "")
  87.     l_astrLogging(LOGGING_MAXIMUM)    = GetLocString(RES_DLL_NAME, _
  88.                                                POP3_LOGGING_MAXIMUM, _
  89.                                                "")
  90.     Dim l_strCaptionMailRoot
  91.     l_strCaptionMailRoot        = GetLocString(RES_DLL_NAME, _
  92.                                                POP3_CAPTION_MASTERSETTINGS_MAILROOT, _
  93.                                                "")
  94.     Dim l_strConfirmNewMailRoot
  95.     l_strConfirmNewMailRoot        = GetLocString(RES_DLL_NAME, _
  96.                                                POP3_PROMPT_MAILROOTCONFIRM, _
  97.                                                "")
  98.     Dim l_strConfirmPOP3ServiceRestart
  99.     l_strConfirmPOP3ServiceRestart    = GetLocString(RES_DLL_NAME, _
  100.                                                POP3_PROMPT_SERVICERESTART_POP3SVC, _
  101.                                                "")
  102.     Dim l_strConfirmPOP3SMTPServiceRestart
  103.     l_strConfirmPOP3SMTPServiceRestart    = GetLocString(RES_DLL_NAME, _
  104.                                                POP3_PROMPT_SERVICERESTART_POP3SVC_SMTP, _
  105.                                                "")
  106.     Dim l_strCaptionRequireSPA
  107.     l_strCaptionRequireSPA    = GetLocString ( RES_DLL_NAME, _
  108.                                                     POP3_CAPTION_MASTERSETTINGS_REQUIRESPA, _
  109.                                                     "" )
  110.     
  111.     Dim l_strErrInvalidPort
  112.     l_strErrInvalidPort            = GetLocString(RES_DLL_NAME, _
  113.                                                POP3_E_INVALIDPORT, _
  114.                                                "")
  115.     
  116.  
  117.     '**********************************************************************
  118.     '*                        E N T R Y   P O I N T
  119.     '**********************************************************************
  120.     
  121.     Call SA_CreatePage(l_strPageTitle, "", PT_PROPERTY, g_page)
  122.     Call SA_ShowPage  (g_page)
  123.  
  124.  
  125.     '**********************************************************************
  126.     '*                H E L P E R  S U B R O U T I N E S 
  127.     '**********************************************************************
  128.     '---------------------------------------------------------------------
  129.     ' ServeCommonJavaScript
  130.     '---------------------------------------------------------------------
  131.     Function ServeCommonJavaScript()
  132.     %>
  133.         <script language="JavaScript" src="../inc_global.js">
  134.         </script>
  135.         <script language="JavaScript">
  136.         
  137.         var g_strOriginalMailRoot;
  138.         function Init()
  139.         {
  140.             g_strOriginalMailRoot = document.getElementsByName("<%=FLD_MAILROOT%>").item(0).value;
  141.             g_nPort = document.getElementsByName("<%=FLD_PORT%>").item(0).value;
  142.             g_nLoggingLevel = document.getElementsByName("<%=FLD_LOGGING%>").item(0).value;
  143.             
  144.             // Update the checkbox enabled state.
  145.             OnAuthenticationChanged();
  146.             g_bSPARequired = document.getElementsByName("<%=FLD_REQUIRESPA%>").item(0).checked;
  147.         }
  148.         function ValidatePage()
  149.         {
  150.             var strPort = document.getElementsByName("<%=FLD_PORT%>").item(0).value;
  151.             var strLoggingLevel = document.getElementsByName("<%=FLD_LOGGING%>").item(0).value;
  152.             var strSPARequired = document.getElementsByName("<%=FLD_REQUIRESPA%>").item(0).checked;
  153.             var strNewMailRoot = document.getElementsByName("<%=FLD_MAILROOT%>").item(0).value;
  154.             
  155.             try
  156.             {
  157.                 var nPort = parseInt(strPort);
  158.                 if ( isNaN(nPort) || 1 > nPort || <%= c_nMaxPort %> < nPort || nPort != strPort )
  159.                 {
  160.                     SA_DisplayErr("<%=SA_EncodeQuotes(Server.HTMLEncode(l_strErrInvalidPort))%>");
  161.                     return false;
  162.                 }
  163.             }
  164.             catch(e)
  165.             {
  166.                 SA_DisplayErr("<%=SA_EncodeQuotes(Server.HTMLEncode(l_strErrInvalidPort))%>");
  167.                 return false;
  168.             }
  169.                     
  170.             var nDomains       = document.getElementsByName("fldNumDomains").item(0).value;
  171.             var bRC = true;
  172.             if(strNewMailRoot != g_strOriginalMailRoot && nDomains > 0)
  173.             {
  174.                 bRC = confirm("<%=SA_EncodeQuotes( l_strConfirmNewMailRoot )%>");
  175.             }
  176.             if ( bRC )
  177.             {
  178.                 var nServiceRestart = "<%=SERVICE_RESTART_NONE%>";
  179.                 if ( strPort != g_nPort || strSPARequired != g_bSPARequired )
  180.                 {
  181.                     nServiceRestart = "<%=SERVICE_RESTART_POP3SVC%>";
  182.                 }
  183.                 if ( strNewMailRoot != g_strOriginalMailRoot || strLoggingLevel != g_nLoggingLevel )
  184.                 {
  185.                     nServiceRestart = "<%=SERVICE_RESTART_POP3SVC_SMTP%>";
  186.                 }
  187.                 if ( "<%=SERVICE_RESTART_POP3SVC%>" == nServiceRestart )
  188.                 {
  189.                     if ( confirm("<%=SA_EncodeQuotes( l_strConfirmPOP3ServiceRestart )%>"))
  190.                     {
  191.                         document.getElementsByName("<%=FLD_SERVICERESTART%>").item(0).value = nServiceRestart;
  192.                     }
  193.                 }
  194.                 if ( "<%=SERVICE_RESTART_POP3SVC_SMTP%>" == nServiceRestart )
  195.                 {
  196.                     if ( confirm("<%=SA_EncodeQuotes( l_strConfirmPOP3SMTPServiceRestart )%>"))
  197.                     {
  198.                         document.getElementsByName("<%=FLD_SERVICERESTART%>").item(0).value = nServiceRestart;
  199.                     }
  200.                 }
  201.             }
  202.             
  203.             return bRC;
  204.         }
  205.         function SetData(){}
  206.     
  207.         </script>
  208.     <%
  209.     End Function
  210.  
  211.  
  212.     '**********************************************************************
  213.     '*                    E V E N T   H A N D L E R S
  214.     '**********************************************************************
  215.     
  216.     '---------------------------------------------------------------------
  217.     ' OnInitPage
  218.     '---------------------------------------------------------------------
  219.     Public Function OnInitPage(ByRef PageIn, ByRef EventArg)
  220.         On Error Resume Next
  221.         
  222.         OnInitPage = TRUE
  223.         
  224.         Dim oConfig
  225.         Set oConfig = Server.CreateObject("P3Admin.P3Config")
  226.         
  227.         g_nLoggingLevel = oConfig.LoggingLevel
  228.         g_strMailRoot = oConfig.MailRoot
  229.         g_nPort = CLng(oConfig.Service.Port)
  230.         g_nAuthentication    = oConfig.Authentication.CurrentAuthMethod
  231.         g_nDomains = oConfig.Domains.Count
  232.         g_bSPARequired = oConfig.Service.SPARequired
  233.         g_iServiceRestart = CInt(SERVICE_RESTART_NONE)
  234.  
  235.         If (Err.number <> 0) Then
  236.             Call SA_SetErrMsg( HandleUnexpectedError() )
  237.         End If
  238.     End Function
  239.     
  240.     '---------------------------------------------------------------------
  241.     ' OnServePropertyPage
  242.     '---------------------------------------------------------------------
  243.     Public Function OnServePropertyPage(ByRef PageIn, ByRef EventArg)
  244.         On Error Resume Next
  245.         
  246.         '
  247.         ' Emit Javascript functions required by Web Framework
  248.         Call ServeCommonJavaScript()
  249.  
  250.         OnServePropertyPage = TRUE
  251.         
  252.         '
  253.         ' Disable the authentication dropdown unless no domains have been
  254.         ' created for this server.
  255.         '
  256.         Dim strAuthenticationDisabled
  257.         If (g_nDomains > 0) Then
  258.             strAuthenticationDisabled = "DISABLED"
  259.         Else
  260.             strAuthenticationDisabled = ""
  261.         End If
  262.  
  263.         Dim strSelected ' Used to select the current value in the dropdowns below.
  264.         strSelected = ""
  265.         
  266.         Dim oConfig, iType, iCount
  267.         Dim iAuthFileType
  268.         
  269.         iAuthFileType = -1
  270.         Set oConfig = Server.CreateObject("P3Admin.P3Config")
  271.         iCount = oConfig.Authentication.Count
  272.             
  273.         For iType = 1 To iCount
  274.             If ( AUTH_FILE = oConfig.Authentication.Item(CLng(iType)).ID ) Then
  275.                 iAuthFileType = iCount
  276.             End If
  277.         Next    
  278. %>
  279.         <SCRIPT LANGUAGE="javascript">
  280.             function OnAuthenticationChanged()
  281.             {
  282.                 var oDropDown = document.getElementsByName("<%=FLD_AUTHENTICATION%>").item(0);
  283.                 var oRequireSPA = document.getElementsByName("<%=FLD_REQUIRESPA%>").item(0);
  284.                 var nAuthentication = oDropDown.options(oDropDown.selectedIndex).value;
  285.                 
  286.                 if ( nAuthentication == "<%=iAuthFileType%>" )
  287.                 {
  288.                     oRequireSPA.disabled = true ;
  289.                     oRequireSPA.checked = false ;
  290.                 }
  291.                 else
  292.                 {
  293.                     oRequireSPA.disabled = false ;
  294.                     oRequireSPA.checked = <%= CStr(g_bSPARequired) %> ;
  295.                 }
  296.             }
  297.         </SCRIPT>
  298.         
  299.         <TABLE CLASS="TasksBody" CELLPADDING=0 CELLSPACING=0>
  300.             <TR>
  301.                 <TD CLASS="TasksBody">
  302.                     <%=Server.HTMLEncode(l_strCaptionAuthentication)%>
  303.                 </TD>
  304.                 <TD CLASS="TasksBody">
  305.                     <SELECT CLASS="FormField"
  306.                             NAME="<%=FLD_AUTHENTICATION%>"
  307.                             ONCHANGE="OnAuthenticationChanged();"
  308.                             <%=strAuthenticationDisabled%>>
  309. <%
  310.                   'Dim oConfig, iType, iCount
  311.                     'Set oConfig = Server.CreateObject("P3Admin.P3Config")
  312.                     'iCount = oConfig.Authentication.Count
  313.                     
  314.                         For iType = 1 To iCount
  315.                             If (iType = oConfig.Authentication.CurrentAuthMethod) Then
  316.                                 strSelected = "SELECTED"
  317.                             Else
  318.                                 strSelected = ""
  319.                             End If
  320. %>
  321.                                 <OPTION <%=strSelected%>
  322.                                         VALUE="<%=iType%>"><%=Server.HTMLEncode(oConfig.Authentication.Item(CLng(iType)).Name)%></OPTION>
  323. <%
  324.                         Next
  325. %>
  326.                     </SELECT>
  327.                 </TD>
  328.             </TR>
  329.             <TR>
  330.                 <TD CLASS="TasksBody">
  331.                     <%=Server.HTMLEncode(l_strCaptionPort)%>
  332.                 </TD>
  333.                 <TD CLASS="TasksBody">
  334.                     <INPUT TYPE="text"
  335.                            CLASS="FormField"
  336.                            NAME="<%=FLD_PORT%>"
  337.                            VALUE="<%=g_nPort%>"
  338.                            SIZE="5"
  339.                            MAXLENGTH="5">
  340.                 </TD>
  341.             </TR>
  342.             <TR>
  343.                 <TD CLASS="TasksBody">
  344.                     <%=Server.HTMLEncode(l_strCaptionLoggingLevel)%>
  345.                 </TD>
  346.                 <TD CLASS="TasksBody">
  347.                     <SELECT CLASS="FormField" NAME="<%=FLD_LOGGING%>">
  348. <%
  349.                         Dim iLevel
  350.                         For iLevel = 0 To 3
  351.                             If (iLevel = g_nLoggingLevel) Then
  352.                                 strSelected = "SELECTED"
  353.                             Else
  354.                                 strSelected = ""
  355.                             End If
  356. %>
  357.                                 <OPTION <%=strSelected%>
  358.                                         VALUE="<%=iLevel%>"><%=Server.HTMLEncode(l_astrLogging(iLevel))%></OPTION>
  359. <%
  360.                         Next
  361. %>
  362.                     </SELECT>
  363.                 </TD>
  364.             </TR>
  365.             
  366.         </TABLE>
  367.         <BR>
  368.         <TABLE>
  369.             <TR>
  370.                 <TD CLASS="TasksBody" COLSPAN="2">
  371.                     <%=Server.HTMLEncode(l_strCaptionMailRoot)%>
  372.                 </TD>
  373.             </TR>
  374.             <TR>
  375.                 <TD CLASS="TasksBody">
  376.                     <INPUT TYPE="text"
  377.                            CLASS="FormField"
  378.                            NAME="<%=FLD_MAILROOT%>"
  379.                            VALUE="<%=Server.HTMLEncode(g_strMailRoot)%>"
  380.                            MAXLENGTH="1024"
  381.                            STYLE="width: 350px">
  382.                 </TD>
  383.             </TR>
  384.             <TR>
  385.                 <TD CLASS="TasksBody" colspan="2">
  386.                     <INPUT type="checkbox" CLASS="FormField" NAME="<%=FLD_REQUIRESPA%>" ID="<%=FLD_REQUIRESPA%>">
  387.                     <%=Server.HTMLEncode(l_strCaptionRequireSPA)%>
  388.                 </TD>
  389.             </TR>
  390.         </TABLE>
  391.         <BR>
  392.         <INPUT TYPE="HIDDEN" NAME="fldNumDomains" VALUE="<%=g_nDomains%>">
  393.         <INPUT TYPE="HIDDEN" NAME="<%=FLD_SERVICERESTART%>" VALUE="<%=g_iServiceRestart%>">
  394. <%
  395.         If (Err.number <> 0) Then
  396.             Call SA_SetErrMsg( HandleUnexpectedError() )
  397.         End If
  398.     End Function
  399.  
  400.     '---------------------------------------------------------------------
  401.     ' OnPostBackPage
  402.     '---------------------------------------------------------------------
  403.     Public Function OnPostBackPage(ByRef PageIn, ByRef EventArg)
  404.         On Error resume next
  405.  
  406.         OnPostBackPage = TRUE
  407.  
  408.         Dim oConfig
  409.         Set oConfig = Server.CreateObject("P3Admin.P3Config")
  410.         
  411.         '
  412.         ' Get the authentication method, if it wasn't disabled.  Otherwise,
  413.         ' just get the current value from the Config object.
  414.         '
  415.         If (Request.Form(FLD_AUTHENTICATION).Count > 0) Then
  416.             g_nAuthentication = CInt(Request.Form(FLD_AUTHENTICATION).Item(1))
  417.         Else
  418.             g_nAuthentication = oConfig.Authentication.CurrentAuthMethod
  419.         End If
  420.         
  421.         '
  422.         ' Get the rest of the form values.
  423.         '
  424.         If ( StrComp(Request.Form(FLD_REQUIRESPA), "on", vbTextCompare) = 0 ) Then
  425.             g_bSPARequired = True 
  426.         Else
  427.             g_bSPARequired = False
  428.         End If
  429.         
  430.         g_nPort            = CLng(Request.Form(FLD_PORT).Item(1))
  431.         g_nLoggingLevel    = CInt(Request.Form(FLD_LOGGING).Item(1))
  432.         g_strMailRoot    = CStr(Request.Form(FLD_MAILROOT).Item(1))
  433.         g_iServiceRestart = CInt(Request.Form(FLD_SERVICERESTART).Item(1))
  434.         
  435.         g_nDomains = oConfig.Domains.Count
  436.  
  437.         If (Err.number <> 0) Then
  438.             Call SA_SetErrMsg( HandleUnexpectedError() )
  439.         End If
  440.     End Function
  441.  
  442.     '---------------------------------------------------------------------
  443.     ' OnSubmitPage
  444.     '---------------------------------------------------------------------
  445.     Public Function OnSubmitPage(ByRef PageIn, ByRef EventArg)
  446.         On Error Resume Next
  447.  
  448.         Dim oConfig, oAuthMethods
  449.         Set oConfig = Server.CreateObject("P3Admin.P3Config")
  450.         Set oAuthMethods = oConfig.Authentication
  451.         
  452.         ' set Authmethod.
  453.         oAuthMethods.CurrentAuthMethod = CLng(g_nAuthentication)
  454.         oAuthMethods.Save ()
  455.         
  456.         ' set main settings
  457.         oConfig.LoggingLevel = g_nLoggingLevel
  458.         oConfig.MailRoot = g_strMailRoot
  459.         oConfig.Service.Port = CLng(g_nPort)
  460.         If ( g_bSPARequired = True ) Then
  461.             oConfig.Service.SPARequired = 1
  462.         Else
  463.             oConfig.Service.SPARequired = 0
  464.         End If
  465.  
  466.         ' cycle the services
  467.         If (Err.number = 0) Then
  468.             If ( SERVICE_RESTART_POP3SVC = g_iServiceRestart Or SERVICE_RESTART_POP3SVC_SMTP = g_iServiceRestart ) Then
  469.                 If ( SERVICE_CONTROL_STOP <> oConfig.Service.POP3ServiceStatus )  Then
  470.                     oConfig.Service.StopPOP3Service()
  471.                     oConfig.Service.StartPOP3Service()
  472.                 End If
  473.             End If
  474.         End If
  475.         If (Err.number = 0) Then
  476.             If ( SERVICE_RESTART_POP3SVC_SMTP = g_iServiceRestart ) Then
  477.                 If ( SERVICE_CONTROL_STOP <> oConfig.Service.SMTPServiceStatus )  Then
  478.                     oConfig.Service.StopSMTPService()
  479.                     oConfig.Service.StartSMTPService()
  480.                 End If
  481.             End If
  482.         End If
  483.         
  484.         If (Err.number <> 0) Then
  485.             Call SA_SetErrMsg( HandleUnexpectedError() )
  486.             OnSubmitPage = FALSE
  487.         Else
  488.             OnSubmitPage = TRUE
  489.         End If
  490.     End Function
  491.     
  492.     '---------------------------------------------------------------------
  493.     ' OnClosePage
  494.     '---------------------------------------------------------------------
  495.     Public Function OnClosePage(ByRef PageIn, ByRef EventArg)
  496.         OnClosePage = TRUE
  497.     End Function
  498. %>
  499.